<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>函数作业</title>
</head>

<body>
    // 1. 定义函数有几种方式
    答:函数声明式和函数表达式
    (补)例子补充:
    function add(a,b){
    return a + b;
    }
    var add = function(a,b){
    return a + b;
    }

    // 2. return关键字的作用
    答:返回到函数调用的地方;停止执行函数

    // 3. 函数实参数和形象个数不等时会发生声明?举例说明
    答：1.实参大于形参，多余的实参会丢失
    2.实参小于形参,多余的形参不会被赋值,为undefined,undefin进行任何运算都是NaN

    // 4. var和function关键字有什么特别功能
    答:var是变量提升,而function是函数提升

    // 5. 请定义一个函数，该函数功能为，传入一个值，返回这个值的平方面；请在写出一个函数，功能为：传入两个值, 分别是 x 和 y, 返回x 和 y次方结果
    补：function root(num){
    return num*num
    }
    function tri(x,y){
    return x ** y;
    }

    // 6. 请写出一个函数， 功能为：传入2个值, 则返回其中的最大值；请在写一个函数, 传入 3 个值 ,返回其中的最大值
    补:
    2个值
    function max2(a,b){
    return (a=a>b?a:b);
    }
    console.log(max2(1,1));

    3个值
    function max3(a,b,c){
    var max = a > b ? a : b;
    return max > c ? max : c;
    }

    // 7. 请定义一个函数,输入一个 N 值，则计算出该值的阶乘，即：`n! = 1*2*3*4*5*6*...*N`

    <!-- 答:function add() {
    var sum = 0;
    for (var i = 0; i < arguments.length; i++) { sum +=arguments[i] } return sum; } console.log(add(1, 2), add(1, 2, 3),
        add(2), add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)); -->

    // 8.以下代码的 console.log 打印的是什么，并解释原因，写出分析过程
    console.log(a);
    var a = 1;
    console.log(a);
    function a() {
    console.log(2);
    }
    console.log(a);
    var a = 3;
    console.log(a);
    function a() {
    console.log(4);
    }
    console.log(a);
    a();


    // 9.(提高)喇叭花数,
    喇叭话术和水仙花类似一个三位数, 其中每一位数字的阶乘之和恰好等于它本身。abc=a! + !b + !c。用函数的方法寻找喇叭花数
    补:145

    // 10. (提高)123['toString'].length + 123=?
    234['toFixed'].length+156=? 为什么
    补:
    (123)["toString"].length + 123;
</body>

</html>